//@ts-ignore
import axios, { AxiosRequestConfig, AxiosResponse } from "axios";
//@ts-ignore
import useLogin from "@/hooks/useLogin"
import { showToast } from 'vant'
// console.log(process.env)
const Api = axios.create({
    baseURL: '/pro-api', // 域名配置，可添加变量配置文件定义
    // headers: {
    //     "Content-Type": "application/x-www-form-urlencoded;charset=utf-8",
    // },
    withCredentials: true, // 跨域请求时是否需要使用凭证
    timeout: 30000, // 请求超时时间
});

// 错误处理函数
function errorHandle(response: AxiosResponse) {
    switch (response.status) {
        case 400:
            // 处理错误信息，例如抛出错误信息提示，或者跳转页面等处理方式。
            // return Promise.resolve(error)
            break;
        case 401:
            //
            break;
        case 404:
            //
            break;
        // ...
        default:
            throw new Error("未知错误");
    }
}
// 成功处理函数

function successHandle(response:any) {
    switch (response.status) {
        case 200:
            //
            if (response.data.status == 200){
                return Promise.resolve(response.data);
            }else if(response.data.status == 300){
                return Promise.reject(response.data);
            }else{
                let data = JSON.parse(response.config.data ? response.config.data : "{}")
                if(data.isError){
                    showToast(response.data.msg);
                }
                return Promise.resolve(response.data);
            }
        // ....
        default:
            return;
    }
}
// 请求拦截器
Api.interceptors.request.use(
    (config: any) => {
        const { userInfo } = useLogin();
        const { token } = userInfo;
        config.headers['token'] = token
        return config;
    },
    (error:any) => {
        // 错误抛到业务代码
        error.data = {};
        error.data.msg = "服务器异常";
        return Promise.resolve(error);
    }
);

Api.interceptors.response.use(
    //@ts-ignore
    (response) => {
        return successHandle(response);
    },
    (err:any) => {
        errorHandle(err);
    }
);

export default Api;


